package com.yuke.cloud.service.api.omc.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.codehaus.jackson.map.annotate.JsonSerialize;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
@ApiModel
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class OdsOrderDto implements Serializable {
    private static final long serialVersionUID = -154171216711236047L;

    /**
     * 主键，自增
     */
    @ApiModelProperty(value = "orderId主键，自增")
    private Long orderId;

    /**
     * 订单号，唯一
     */
    @ApiModelProperty(value = "orderSn订单号，唯一")
    private String orderSn;

    /**
     * 订单类型， 0：未知；1：消费者向店铺下单；2：店铺向平台仓库下单
     */
    @ApiModelProperty(value = "orderType订单类型， 0：未知；1：消费者向店铺下单；2：店铺向平台仓库下单")
    private Byte orderType;

    /**
     * 订单用户ID，与用户表关联
     */
    @ApiModelProperty(value = "userId订单用户ID，与用户表关联")
    private Long userId;

    private String userName;
    /**
     * 店铺ID
     */
    @ApiModelProperty(value = "shopId店铺ID")
    private Long shopId;

    private Long groupId;

    /**
     * 店铺ID
     */
    @ApiModelProperty(value = "订单所属仓库ID")
    private Long warehouseId;

    @ApiModelProperty(value = "订单所用到的优惠券ID")
    private Long couponReceiveId;

    @ApiModelProperty(value = "订单所用到的红包ID")
    private Long redReceiveId;
    /**
     * 订单应该支付的金额，包含运费等，单位为分
     */
    @ApiModelProperty(value = "amountPayable订单应该支付的金额，包含运费等，单位为分")
    private Integer amountPayable;

    /**
     * 已付金额，单位分
     */
    @ApiModelProperty(value = "amountPaid已付金额，单位分")
    private Integer amountPaid;

    /**
     * 商品销售价总额，单位分
     */
    @ApiModelProperty(value = "productPriceTotal商品销售价总额，单位分")
    private Integer productPriceTotal;

    /**
     * 商品优惠总金额，单位分
     */
    @ApiModelProperty(value = "discount商品优惠总金额，单位分")
    private Integer discount;

    private Integer couponMoney;
    private Integer redMoney;
    /**
     * 订单状态， 0：店铺/平台未确认；1：已确认，交由仓库发货；2：已完成；3：已取消（用户触发）；4：退货/退款（订单完成后）；5：部分退货/退款（订单完成后）；6：无效作废（管理员触发）
     */
    @ApiModelProperty(value = "orderStatus订单状态， 0：店铺/平台未确认；1：已确认，交由仓库发货；2：已完成；3：已取消（用户触发）；4：退货/退款（订单完成后）；5：部分退货/退款（订单完成后）；6：无效作废（管理员触发）")
    private Byte orderStatus;

    /**
     * 订单支付状态， 0：未付款；1：已付款；2：货到付款
     */
    @ApiModelProperty(value = "payStatus订单支付状态， 0：未付款；1：已付款；2：货到付款")
    private Byte payStatus;

    /**
     * 商品配送方式， 0：同城即时达（仓库发还是店铺发暂时还不确定），1：物流快递，2：同城快送（一般24小时左右送达），3：即时达（云顶店铺发货），4：即时达（由仓库发货）
     */
    @ApiModelProperty(value = "Type商品配送方式， 0：同城即时达（仓库发还是店铺发暂时还不确定），1：物流快递，2：同城快送（一般24小时左右送达），3：即时达（云顶店铺发货），4：即时达（由仓库发货）")
    private Byte shippingType;

    /**
     * 选择配送的快递公司ID
     */
    @ApiModelProperty(value = "expressId选择配送的快递公司ID")
    private Long expressId;

    /**
     * 商品配送情况， 0：未发货； 1：备货中；2：已（开始）发货；3：已收货
     */
    @ApiModelProperty(value = "shippingStatus商品配送情况， 0：未发货； 1：备货中；2：已（开始）发货；3：已收货")
    private Byte shippingStatus;

    /**
     * 配送时间方式。 0：工作日、双休日与假日均可送货; 1：只有双休日、假日送货（工作日不用送货）; 2：只有工作日送货（双休日、假日不用送） （一般为写字楼/商用/学校等地址客户选择）
     */
    @ApiModelProperty(value = "shippingTime配送时间方式。 0：工作日、双休日与假日均可送货; 1：只有双休日、假日送货（工作日不用送货）; 2：只有工作日送货（双休日、假日不用送） （一般为写字楼/商用/学校等地址客户选择）")
    private Byte shippingTime;

    /**
     * 最佳送货时间
     */
    @ApiModelProperty(value = "bestShippingTime最佳送货时间")
    private Date bestShippingTime;

    /**
     * 收货人的姓名
     */
    @ApiModelProperty(value = "consignee收货人的姓名")
    private String consignee;

    /**
     * 收货人性别，0：未知，1：男，2：女
     */
    @ApiModelProperty(value = "sex收货人性别，0：未知，1：男，2：女")
    private Byte sex;

    /**
     * 收货人的手机号
     */
    @ApiModelProperty(value = "mobile收货人的手机号")
    private String mobile;

    /**
     * 固定电话
     */
    @ApiModelProperty(value = "telephone固定电话")
    private String telephone;

    /**
     * 收货人的邮箱地址
     */
    @ApiModelProperty(value = "email收货人的邮箱地址")
    private String email;

    /**
     * 收货人详细地址
     */
    @ApiModelProperty(value = "address收货人详细地址")
    private String address;

    /**
     * 邮政编码
     */
    @ApiModelProperty(value = "postCode邮政编码")
    private String postCode;

    /**
     * 配送费优惠金额，单位为分
     */
    @ApiModelProperty(value = "freightReduce配送费优惠金额，单位为分")
    private Integer freightReduce;

    /**
     * 应付配送费用，单位为分。应付配送费用为原有配送费用的基础上减掉优惠的配送费用。
     */
    @ApiModelProperty(value = "freightPayable应付配送费用，单位为分。应付配送费用为原有配送费用的基础上减掉优惠的配送费用。")
    private Integer freightPayable;

    /**
     * 商品保价费用，单位为分
     */
    @ApiModelProperty(value = "insureFee商品保价费用，单位为分")
    private Integer insureFee;

    /**
     * 是否索要发票，0：不需要，1：需要
     */
    @ApiModelProperty(value = "isInvoice是否索要发票，0：不需要，1：需要")
    private Boolean isInvoice;

    /**
     * 发票类型，1：个人，2：公司
     */
    @ApiModelProperty(value = "invoiceType发票类型，1：个人，2：公司")
    private Byte invoiceType;

    /**
     * 发票抬头
     */
    @ApiModelProperty(value = "invoiceHead发票抬头")
    private String invoiceHead;

    /**
     * 发票内容
     */
    @ApiModelProperty(value = "invoiceContent发票内容")
    private String invoiceContent;

    /**
     * 发票税额，单位为分
     */
    @ApiModelProperty(value = "invoiceTax发票税额，单位为分")
    private Integer invoiceTax;

    /**
     * 用户附言
     */
    @ApiModelProperty(value = "postscript用户附言")
    private String postscript;

    /**
     * 管理员或店铺人员备注
     */
    @ApiModelProperty(value = "note管理员或店铺人员备注")
    private String note;

    /**
     * 支付平台类型，0：货到付款；1：在线支付
     */
    @ApiModelProperty(value = "payType支付平台类型，0：货到付款；1：在线支付(银行/银联)；2：在线支付(支付宝)；3：在线支付（微信）")
    private Byte payType;

    /**
     * 支付平台ID号，与支付平台表相关联
     */
    @ApiModelProperty(value = "payPlatformId支付平台ID号，与支付平台表相关联")
    private Integer payPlatformId;

    /**
     * 支付平台交易号
     */
    @ApiModelProperty(value = "tradeCode支付平台交易号")
    private String tradeCode;

    /**
     * 是否给商家结算货款 0:未结算 1:已结算。一般根据某个周期结算一次，如7天的订单结算一次
     */
    @ApiModelProperty(value = "isCheckout是否给商家结算货款 0:未结算 1:已结算。一般根据某个周期结算一次，如7天的订单结算一次")
    private Boolean isCheckout;

    /**
     * 订单生成时间
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "createTime订单生成时间")
    private Date createTime;

    /**
     * 订单确认时间
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "confirmTime订单确认时间")
    private Date confirmTime;

    /**
     * 订单支付时间
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "payTime订单支付时间")
    private Date payTime;

    /**
     * 发货时间
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "sendTime发货时间")
    private Date sendTime;

    /**
     * 收货时间
     */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "acceptTime收货时间")
    private Date acceptTime;

    /**
     * 是否为厂家直销商品
     */
    @ApiModelProperty(value = "是否为厂家直销商品")
    private Boolean isFactory;

    /**
     * 厂家直销店铺ID
     */
    @ApiModelProperty(value = "厂家直销店铺ID")
    private Long factoryShopId;

    private List<OdsOrderGoodsDto> goodList;

    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    private Date beginTime;
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    private Date endTime;


}
